import request from '@/utils/request'

/**
 * 学生相关API
 */
export default {
  /**
   * 获取学生仪表盘数据
   */
  getDashboard() {
    return request({
      url: '/student/dashboard',
      method: 'get'
    })
  },

  /**
   * 获取学生信息
   */
  getInfo() {
    return request({
      url: '/student/info',
      method: 'get'
    })
  },

  /**
   * 获取课程列表
   * @param {Object} params - 查询参数
   */
  getCourses(params) {
    return request({
      url: '/student/courses',
      method: 'get',
      params
    })
  },

  /**
   * 获取课表
   * @param {Object} params - 查询参数
   */
  getSchedule(params) {
    return request({
      url: '/student/schedule',
      method: 'get',
      params
    })
  },

  /**
   * 获取作业列表
   * @param {Object} params - 查询参数
   */
  getHomework(params) {
    return request({
      url: '/student/homework',
      method: 'get',
      params
    })
  },

  /**
   * 获取作业课程列表
   * @returns {Promise} - 返回Promise对象
   */
  getHomeworkCourses() {
    return request({
      url: '/student/homework/courses',
      method: 'get'
    })
  },

  /**
   * 获取作业列表
   * @param {Object} params - 查询参数，包含courseId
   * @returns {Promise} - 返回Promise对象
   */
  getHomeworkList(params) {
    return request({
      url: '/student/homework/list',
      method: 'get',
      params
    })
  },

  /**
   * 获取作业详情
   * @param {string|number} id - 作业ID
   */
  getHomeworkDetail(id) {
    return request({
      url: `/student/homework/${id}`,
      method: 'get'
    })
  },

  /**
   * 提交作业
   * @param {string|number} id - 作业ID
   * @param {Object} data - 提交数据
   */
  submitHomework(id, data) {
    return request({
      url: `/student/homework/${id}/submit`,
      method: 'post',
      data
    })
  },

  /**
   * 获取考勤记录
   * @param {Object} params - 查询参数
   */
  getAttendance(params) {
    return request({
      url: '/student/attendance',
      method: 'get',
      params
    })
  },
  
  /**
   * 获取待签到课程
   */
  getPendingAttendance() {
    return request({
      url: '/student/attendance/pending',
      method: 'get'
    })
  },
  
  /**
   * 获取考勤统计
   */
  getAttendanceStatistics() {
    return request({
      url: '/student/attendance/statistics',
      method: 'get'
    })
  },
  
  /**
   * 课程签到
   * @param {Object} data - 签到数据
   */
  signIn(data) {
    return request({
      url: '/student/attendance/sign',
      method: 'post',
      data
    })
  },

  /**
   * 获取成绩列表
   * @param {Object} params - 查询参数
   */
  getGrades(params) {
    return request({
      url: '/student/grades',
      method: 'get',
      params
    })
  },
  
  /**
   * 获取选课列表
   * @param {Object} params - 查询参数
   */
  getCourseSelection(params) {
    return request({
      url: '/student/course-selection',
      method: 'get',
      params
    })
  },
  
  /**
   * 获取已选课程
   */
  getSelectedCourses() {
    return request({
      url: '/student/course-selection/selected',
      method: 'get'
    })
  },
  
  /**
   * 获取选课记录
   */
  getSelectionRecords() {
    return request({
      url: '/student/course-selection/records',
      method: 'get'
    })
  },
  
  /**
   * 选课
   * @param {string|number} courseId - 课程ID
   */
  selectCourse(courseId) {
    return request({
      url: `/student/course-selection/${courseId}`,
      method: 'post'
    })
  },
  
  /**
   * 退课
   * @param {string|number} courseId - 课程ID
   */
  dropCourse(courseId) {
    return request({
      url: `/student/course-selection/${courseId}`,
      method: 'delete'
    })
  },

  /**
   * 获取资源列表
   * @param {Object} params - 查询参数
   */
  getResources(params) {
    return request({
      url: '/student/resources',
      method: 'get',
      params
    })
  },

  /**
   * 获取下载历史
   */
  getDownloadHistory() {
    return request({
      url: '/student/resources/download-history',
      method: 'get'
    })
  },

  /**
   * 下载资源
   * @param {string|number} resourceId - 资源ID
   */
  downloadResource(resourceId) {
    return request({
      url: `/student/resources/download/${resourceId}`,
      method: 'get'
    })
  },

  /**
   * 重新下载资源
   * @param {string|number} recordId - 下载记录ID
   */
  redownloadResource(recordId) {
    return request({
      url: `/student/resources/redownload/${recordId}`,
      method: 'get'
    })
  },

  /**
   * 获取学分/成绩详情
   * @param {Object} params - 查询参数（如学年等）
   */
  getCredits(params) {
    return request({
      url: '/student/credits',
      method: 'get',
      params
    })
  },

  /**
   * 获取评教课程列表
   * @param {Object} params - 查询参数
   */
  getEvaluationList(params) {
    return request({
      url: '/student/evaluation',
      method: 'get',
      params
    })
  },

  /**
   * 获取评教详情
   * @param {string|number} id - 课程ID
   */
  getEvaluationDetail(id) {
    return request({
      url: `/student/evaluation/${id}`,
      method: 'get'
    })
  },

  /**
   * 提交评教
   * @param {string|number} id - 课程ID
   * @param {Object} data - 评价内容
   */
  submitEvaluation(id, data) {
    return request({
      url: `/student/evaluation/${id}`,
      method: 'post',
      data
    })
  },

  /**
   * 获取请假记录
   * @param {Object} params - 查询参数
   */
  getLeaveList(params) {
    return request({
      url: '/student/leave',
      method: 'get',
      params
    })
  },

  /**
   * 提交请假申请
   * @param {Object} data - 请假表单
   */
  submitLeave(data) {
    return request({
      url: '/student/leave',
      method: 'post',
      data
    })
  },

  /**
   * 获取推荐课程列表
   * @param {Object} params - 查询参数
   */
  getRecommendedCourses(params) {
    return request({
      url: '/student/recommended-courses',
      method: 'get',
      params
    })
  },

  /**
   * 获取推荐课程详情
   * @param {string|number} id - 课程ID
   */
  getRecommendedCourseDetail(id) {
    return request({
      url: `/student/recommended-courses/${id}`,
      method: 'get'
    })
  },

  /**
   * 通用GET请求
   * @param {string} url - 请求URL
   * @param {Object} params - 查询参数
   */
  get(url, params) {
    return request({
      url,
      method: 'get',
      params
    })
  },

  /**
   * 通用POST请求
   * @param {string} url - 请求URL
   * @param {Object} data - 请求数据
   */
  post(url, data) {
    return request({
      url,
      method: 'post',
      data
    })
  },

  /**
   * 通用PUT请求
   * @param {string} url - 请求URL
   * @param {Object} data - 请求数据
   */
  put(url, data) {
    return request({
      url,
      method: 'put',
      data
    })
  },

  /**
   * 通用DELETE请求
   * @param {string} url - 请求URL
   * @param {Object} params - 查询参数
   */
  delete(url, params) {
    return request({
      url,
      method: 'delete',
      params
    })
  }
} 